import type { ComplianceItem } from './work';
import { ComplianceType, ProgressStatus } from './work';

// 问题严重程度枚举
export enum IssueSeverity {
  HIGH = 'high',
  MEDIUM = 'medium',
  LOW = 'low'
}

// 问题类型枚举
export enum IssueType {
  TYPO = 'typo',                         // 错别字
  SEMANTIC = 'semantic',                 // 语义混乱
  RISK_LEVEL = 'risk-level',             // 风险等级不合理
  COMPLIANCE_STATUS = 'compliance-status' // 合规状态不合理
}

// AI检测问题接口
export interface AICorrectionIssue {
  id: string;
  itemId: string;                        // 关联的检查项ID
  type: IssueType;                       // 问题类型
  severity: IssueSeverity;               // 严重程度
  title: string;                         // 原始标题
  description: string;                   // 问题描述
  suggestion: string;                    // 改进建议
  originalContent?: string;              // 原始内容
  originalDescription?: string;          // 原始描述
}

// 检测结果统计
export interface CorrectionStats {
  totalItems: number;                    // 检测项目总数
  totalIssues: number;                   // 发现问题总数
  highPriorityIssues: number;            // 高优先级问题数
  mediumPriorityIssues: number;          // 中优先级问题数
  lowPriorityIssues: number;             // 低优先级问题数
  qualityScore: number;                  // 质量评分 (0-100)
  issuesByType: {                        // 按类型统计问题数
    [key in IssueType]: number;
  };
}

// 检测状态枚举
export enum CorrectionStatus {
  IDLE = 'idle',                         // 未开始
  SELECTING = 'selecting',               // 选择检查项阶段
  PROCESSING = 'processing',             // 检测中
  COMPLETED = 'completed'                // 检测完成
}

// 分页配置
export interface PaginationConfig {
  currentPage: number;                   // 当前页码
  pageSize: number;                      // 每页显示数量
  totalItems: number;                    // 总项目数
}

// 筛选器接口
export interface CorrectionFilters {
  searchTerm: string;                    // 搜索关键词
  type: ComplianceType | 'all';          // 检查项类型筛选
  issueType: IssueType | 'all';          // 问题类型筛选
  severity: IssueSeverity | 'all';       // 严重程度筛选
  progressStatus: ProgressStatus | 'all'; // 评估项进度筛选
}

// 排序选项
export type SortOption = 'severity' | 'type' | 'itemId';

// AI检测上下文状态
export interface AICorrectorState {
  // 检查项相关
  selectedItems: ComplianceItem[];       // 已选择的检查项，用于多处组件
  filteredItems: ComplianceItem[];       // 筛选后的检查项，用于多处组件
  
  // 问题相关
  issues: AICorrectionIssue[];           // 所有检测到的问题，多个组件需要共享
  
  // 状态相关
  stats: CorrectionStats;                // 统计数据，用于概览和其他组件
  status: CorrectionStatus;              // 当前检测状态，控制整体流程
  progress: number;                      // 检测进度，用于进度展示
  
  // 筛选相关
  filters: CorrectionFilters;            // 筛选条件，影响多个组件的展示
  
  // 编辑相关
  editingIssueId: string | null;         // 当前正在编辑的问题ID，控制编辑状态
  modifiedItems: {                       // 已修改但未应用的检查项数据，按itemId存储
    [itemId: string]: Partial<ComplianceItem>;
  };
  modifiedIssues: string[];              // 已修改的问题项ID列表，用于独立追踪修改状态
}
